// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    // 获取用户信息
    fetchUserInfo();
});

// 获取用户信息
async function fetchUserInfo() {
    const userId = getItemWithExpiry('userId');
    console.log('当前用户ID:', userId);
    
    if (!userId) {
        // 如果未登录，隐藏用户信息区域
        const userInfo = document.querySelector('.user-info');
        if (userInfo) {
            userInfo.style.display = 'none';
        }
        return;
    }

    try {
        // 确保userId是数字
        let numericUserId;
        if (typeof userId === 'string') {
            // 如果userId是字符串，尝试解析JSON
            try {
                const parsed = JSON.parse(userId);
                numericUserId = parsed.value || parsed;
            } catch (e) {
                numericUserId = parseInt(userId);
            }
        } else {
            numericUserId = userId;
        }

        if (isNaN(numericUserId)) {
            console.error('无效的用户ID:', userId);
            throw new Error('无效的用户ID');
        }

        console.log('处理后的用户ID:', numericUserId);

        const response = await fetch(`http://localhost:8080/user/${numericUserId}`, {
            method: 'GET',
            headers: {
                'Accept': 'application/json'
            }
        });

        if (!response.ok) {
            throw new Error('获取用户信息失败');
        }

        const userData = await response.json();
        console.log('获取到的用户数据:', userData);
        
        if (userData.code === 200 && userData.data) {
            // 显示用户信息区域
            const userInfo = document.querySelector('.user-info');
            if (userInfo) {
                userInfo.style.display = 'block';
            }
            
            // 更新用户名
            const usernameElement = document.querySelector('.username');
            if (usernameElement) {
                usernameElement.textContent = userData.data.username || '游客';
            }
            
            // 更新头像
            const navAvatars = document.querySelectorAll('.user-avatar');
            const defaultAvatar = 'images/avatar.jpg';
            
            navAvatars.forEach(avatar => {
                const avatarUrl = userData.data.image || defaultAvatar;
                console.log('更新头像:', avatarUrl);
                // 添加时间戳防止缓存
                const timestamp = new Date().getTime();
                avatar.src = `${avatarUrl}?t=${timestamp}`;
                // 强制刷新图片
                avatar.style.display = 'none';
                setTimeout(() => {
                    avatar.style.display = 'block';
                }, 50);
            });
            
            // 保存到本地存储
            setItemWithExpiry('userInfo', JSON.stringify(userData.data), 7 * 24 * 60);
        }
    } catch (error) {
        console.error('获取用户信息失败:', error);
        // 如果获取失败，隐藏用户信息区域
        const userInfo = document.querySelector('.user-info');
        if (userInfo) {
            userInfo.style.display = 'none';
        }
    }
}

// 添加一个刷新用户信息的函数
function refreshUserInfo() {
    console.log('刷新用户信息');
    fetchUserInfo();
}

// 导出函数供其他模块使用
window.refreshUserInfo = refreshUserInfo;

// 处理本地存储的工具函数
function getItemWithExpiry(key) {
    const itemStr = localStorage.getItem(key);
    if (!itemStr) {
        return null;
    }
    try {
    const item = JSON.parse(itemStr);
        if (!item.expiry) {
            // 如果是旧格式的数据，尝试解析value字段
            if (typeof item === 'object' && item.value !== undefined) {
                return item.value;
            }
            return itemStr;
        }
    const now = new Date();
    if (now.getTime() > item.expiry) {
        localStorage.removeItem(key);
        return null;
    }
    return item.value;
    } catch (e) {
        // 如果解析失败，返回原始值
        return itemStr;
    }
}

// 设置带过期时间的本地存储
function setItemWithExpiry(key, value, ttl) {
    const now = new Date();
    const item = {
        value: value,
        expiry: now.getTime() + (ttl * 60 * 1000) // ttl 单位为分钟
    };
    localStorage.setItem(key, JSON.stringify(item));
}

document.addEventListener('DOMContentLoaded', function() {
    console.log('user.js 开始执行');
    
    // 检查登录状态
    const isLoggedIn = getItemWithExpiry('isLoggedIn');
    const username = getItemWithExpiry('username');
    const userInfo = JSON.parse(getItemWithExpiry('userInfo') || '{}');
    
    console.log('登录状态:', isLoggedIn);
    console.log('用户名:', username);
    console.log('用户信息:', userInfo);
    
    // 获取相关元素
    const userInfoDiv = document.querySelector('.user-info');
    const loginLink = document.querySelector('.login-link');
    const usernameSpan = document.querySelector('.username');
    const logoutLink = document.querySelector('.logout-link');
    const userAvatar = document.querySelector('.user-avatar');
    
    console.log('用户信息区域元素:', userInfoDiv);
    console.log('登录链接元素:', loginLink);
    console.log('用户名元素:', usernameSpan);
    console.log('退出链接元素:', logoutLink);
    console.log('头像元素:', userAvatar);
    
    // 需要登录才能访问的页面链接
    const protectedLinks = [
        'scenic.html',
        'routes.html',
        'guide.html',
        'food.html',
        'culture.html',
        'contact.html',
        'faq.html',
    ];
    
    if (isLoggedIn === 'true' && username) {
        console.log('用户已登录，显示用户信息');
        // 显示用户信息
        if (userInfoDiv) {
            userInfoDiv.style.display = 'flex';
            console.log('设置用户信息区域显示为flex');
            // 确保下拉菜单正确显示
            const dropdown = userInfoDiv.querySelector('.dropdown');
            if (dropdown) {
                dropdown.style.display = 'block';
                console.log('设置下拉菜单显示为block');
            }
        }
        if (usernameSpan) {
            usernameSpan.textContent = username;
            console.log('设置用户名:', username);
        }
        if (userAvatar) {
            // 从userInfo中获取image字段
            const userInfoObj = typeof userInfo === 'string' ? JSON.parse(userInfo) : userInfo;
            userAvatar.src = userInfoObj.image || 'images/avatar.jpg';
            console.log('设置头像:', userAvatar.src);
        }
        
        // 隐藏登录链接
        if (loginLink) {
            loginLink.classList.add('hidden');
            console.log('隐藏登录链接');
        }
        
        // 处理退出登录
        if (logoutLink) {
            logoutLink.addEventListener('click', function(e) {
                e.preventDefault();
                console.log('点击退出登录');
                // 清除所有登录相关的存储
                const keysToRemove = [
                    'isLoggedIn',
                    'username',
                    'userInfo',
                    'rememberUsername',
                    'userId',
                    'redirectAfterLogin'
                ];
                keysToRemove.forEach(key => localStorage.removeItem(key));
                console.log('已清除所有登录信息');
                // 刷新页面
                window.location.reload();
            });
        }
    } else {
        console.log('用户未登录，隐藏用户信息');
        // 隐藏用户信息
        if (userInfoDiv) {
            userInfoDiv.style.display = 'none';
            console.log('隐藏用户信息区域');
        }
        
        // 显示登录链接
        if (loginLink) {
            loginLink.classList.remove('hidden');
            console.log('显示登录链接');
        }

        // 拦截所有链接点击
        document.addEventListener('click', function(e) {
            // 查找最近的链接元素
            let link = e.target.closest('a');
            
            // 如果点击的是链接
            if (link) {
                // 获取链接的href
                const href = link.getAttribute('href');
                
                // 如果链接指向需要保护的页面
                if (href && protectedLinks.some(page => href.includes(page))) {
                    e.preventDefault(); // 阻止默认跳转
                    
                    // 显示登录提示
                    if (confirm('请先登录后再访问该页面，是否前往登录？')) {
                        // 保存当前页面URL到localStorage
                        setItemWithExpiry('redirectAfterLogin', window.location.href, 30); // 30分钟过期
                        // 跳转到登录页面
                        window.location.href = 'login.html';
                    }
                }
            }
        });
    }
}); 